package com.tms.basic.pojo.domain;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 驾驶员信息实体类
 *
 * @author TMS
 * @since 2024-01-01
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("driver")
public class Driver {

    /**
     * 驾驶员ID，主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 关联的用户ID (如果驾驶员也作为系统用户登录)
     */
    private Long userId;

    /**
     * 驾驶员姓名
     */
    private String name;

    /**
     * 员工编号
     */
    private String employeeId;

    /**
     * 手机号码
     */
    private String phoneNumber;

    /**
     * 身份证号码
     */
    private String idCardNumber;

    /**
     * 性别 (1:男, 2:女, 0:未知)
     */
    private Integer gender;

    /**
     * 出生日期
     */
    private LocalDate birthDate;

    /**
     * 入职日期
     */
    private LocalDate hireDate;

    /**
     * 驾驶员状态 (1:空闲, 2:出车中, 3:休假, 4:离职)
     */
    private Integer driverStatus;

    /**
     * 所属机构/公司ID
     */
    private Long organizationId;

    /**
     * 紧急联系人姓名
     */
    private String emergencyContactName;

    /**
     * 紧急联系人电话
     */
    private String emergencyContactPhone;

    /**
     * 家庭住址
     */
    private String address;

    /**
     * 头像照片URL
     */
    private String avatarUrl;

    /**
     * 备注
     */
    private String remarks;

    /**
     * 逻辑删除标志 (0:未删除, 1:已删除)
     */
    @TableLogic
    private Integer isDeleted;

    /**
     * 创建人ID
     */
    @TableField(fill = FieldFill.INSERT)
    private Long createdBy;

    /**
     * 更新人ID
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updatedBy;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;
} 